package net.mcreator.backrooma.entity.renderer;

import net.minecraftforge.fml.client.registry.RenderingRegistry;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.api.distmarker.Dist;

import net.minecraft.util.ResourceLocation;
import net.minecraft.entity.Entity;
import net.minecraft.client.renderer.model.ModelRenderer;
import net.minecraft.client.renderer.entity.model.EntityModel;
import net.minecraft.client.renderer.entity.MobRenderer;

import net.mcreator.backrooma.entity.SkinPeelerEntity;

import com.mojang.blaze3d.vertex.IVertexBuilder;
import com.mojang.blaze3d.matrix.MatrixStack;

@OnlyIn(Dist.CLIENT)
public class SkinPeelerRenderer {
	public static class ModelRegisterHandler {
		@SubscribeEvent
		@OnlyIn(Dist.CLIENT)
		public void registerModels(ModelRegistryEvent event) {
			RenderingRegistry.registerEntityRenderingHandler(SkinPeelerEntity.entity, renderManager -> {
				return new MobRenderer(renderManager, new ModelSkin_Peeler(), 0.5f) {

					@Override
					public ResourceLocation getEntityTexture(Entity entity) {
						return new ResourceLocation("backrooma:textures/skin_peeler.png");
					}
				};
			});
		}
	}

	// Made with Blockbench 3.9.3
	// Exported for Minecraft version 1.15 - 1.16 with MCP mappings
	// Paste this class into your mod and generate all required imports
	public static class ModelSkin_Peeler extends EntityModel<Entity> {
		private final ModelRenderer all2;
		private final ModelRenderer right_leg2;
		private final ModelRenderer left_leg2;
		private final ModelRenderer Body9;
		private final ModelRenderer Body8;
		private final ModelRenderer Body7;
		private final ModelRenderer Body6;
		private final ModelRenderer Body5;
		private final ModelRenderer Head2;
		private final ModelRenderer cube_r1;
		private final ModelRenderer Left_arm2;
		private final ModelRenderer cube_r2;
		private final ModelRenderer right_arm3;
		private final ModelRenderer cube_r3;
		private final ModelRenderer bb_main;
		private final ModelRenderer cube_r4;
		private final ModelRenderer cube_r5;

		public ModelSkin_Peeler() {
			textureWidth = 256;
			textureHeight = 256;
			all2 = new ModelRenderer(this);
			all2.setRotationPoint(0.0F, 24.0F, 0.0F);
			right_leg2 = new ModelRenderer(this);
			right_leg2.setRotationPoint(0.0F, 0.0F, 0.0F);
			all2.addChild(right_leg2);
			right_leg2.setTextureOffset(231, 43).addBox(-12.0F, -22.0F, -6.0F, 6.0F, 22.0F, 7.0F, 0.0F, false);
			left_leg2 = new ModelRenderer(this);
			left_leg2.setRotationPoint(0.0F, 0.0F, 0.0F);
			all2.addChild(left_leg2);
			left_leg2.setTextureOffset(231, 0).addBox(6.0F, -22.0F, -6.0F, 6.0F, 22.0F, 7.0F, 0.0F, false);
			Body9 = new ModelRenderer(this);
			Body9.setRotationPoint(0.0F, 0.0F, 0.0F);
			all2.addChild(Body9);
			Body8 = new ModelRenderer(this);
			Body8.setRotationPoint(0.0F, 0.0F, 0.0F);
			Body9.addChild(Body8);
			Body8.setTextureOffset(151, 165).addBox(-17.0F, -27.0F, -14.0F, 33.0F, 8.0F, 20.0F, 0.0F, false);
			Body7 = new ModelRenderer(this);
			Body7.setRotationPoint(0.0F, 0.0F, 0.0F);
			Body9.addChild(Body7);
			Body7.setTextureOffset(172, 129).addBox(-14.0F, -35.0F, -11.0F, 28.0F, 8.0F, 14.0F, 0.0F, false);
			Body6 = new ModelRenderer(this);
			Body6.setRotationPoint(0.0F, -8.0F, 0.0F);
			Body9.addChild(Body6);
			Body6.setTextureOffset(151, 229).addBox(-18.0F, -35.0F, -13.0F, 34.0F, 8.0F, 19.0F, 0.0F, false);
			Body5 = new ModelRenderer(this);
			Body5.setRotationPoint(0.0F, -8.0F, 0.0F);
			Body9.addChild(Body5);
			Body5.setTextureOffset(41, 34).addBox(-22.0F, -43.0F, -16.0F, 42.0F, 8.0F, 26.0F, 0.0F, false);
			Head2 = new ModelRenderer(this);
			Head2.setRotationPoint(0.0F, 0.0F, 0.0F);
			all2.addChild(Head2);
			cube_r1 = new ModelRenderer(this);
			cube_r1.setRotationPoint(0.0F, 0.0F, 0.0F);
			Head2.addChild(cube_r1);
			setRotationAngle(cube_r1, -3.1416F, 0.0436F, 3.1416F);
			cube_r1.setTextureOffset(0, 195).addBox(-6.0F, -61.0F, 0.0F, 12.0F, 10.0F, 11.0F, 0.0F, false);
			Left_arm2 = new ModelRenderer(this);
			Left_arm2.setRotationPoint(0.0F, 0.0F, 0.0F);
			all2.addChild(Left_arm2);
			cube_r2 = new ModelRenderer(this);
			cube_r2.setRotationPoint(-22.0F, -44.0F, -3.0F);
			Left_arm2.addChild(cube_r2);
			setRotationAngle(cube_r2, -0.535F, -0.0865F, 0.1314F);
			cube_r2.setTextureOffset(0, 0).addBox(-4.0F, -2.0F, -3.0F, 5.0F, 26.0F, 5.0F, 0.0F, false);
			right_arm3 = new ModelRenderer(this);
			right_arm3.setRotationPoint(0.0F, 0.0F, 0.0F);
			all2.addChild(right_arm3);
			cube_r3 = new ModelRenderer(this);
			cube_r3.setRotationPoint(20.0F, -44.0F, -3.0F);
			right_arm3.addChild(cube_r3);
			setRotationAngle(cube_r3, -0.5008F, 0.1482F, 0.1347F);
			cube_r3.setTextureOffset(0, 145).addBox(-1.4822F, -0.6924F, -1.8799F, 5.0F, 26.0F, 5.0F, 0.0F, false);
			bb_main = new ModelRenderer(this);
			bb_main.setRotationPoint(0.0F, 24.0F, 0.0F);
			bb_main.setTextureOffset(231, 43).addBox(-12.0F, -22.0F, -6.0F, 6.0F, 22.0F, 7.0F, 0.0F, false);
			bb_main.setTextureOffset(231, 0).addBox(6.0F, -22.0F, -6.0F, 6.0F, 22.0F, 7.0F, 0.0F, false);
			bb_main.setTextureOffset(151, 165).addBox(-17.0F, -27.0F, -14.0F, 33.0F, 8.0F, 20.0F, 0.0F, false);
			bb_main.setTextureOffset(172, 129).addBox(-14.0F, -35.0F, -11.0F, 28.0F, 8.0F, 14.0F, 0.0F, false);
			bb_main.setTextureOffset(151, 229).addBox(-18.0F, -43.0F, -13.0F, 34.0F, 8.0F, 19.0F, 0.0F, false);
			bb_main.setTextureOffset(41, 34).addBox(-22.0F, -51.0F, -16.0F, 42.0F, 8.0F, 26.0F, 0.0F, false);
			bb_main.setTextureOffset(0, 195).addBox(-6.0F, -61.0F, -9.0F, 12.0F, 10.0F, 11.0F, 0.0F, false);
			cube_r4 = new ModelRenderer(this);
			cube_r4.setRotationPoint(20.0F, -44.0F, -3.0F);
			bb_main.addChild(cube_r4);
			setRotationAngle(cube_r4, 1.2009F, 0.1482F, 0.1347F);
			cube_r4.setTextureOffset(0, 145).addBox(-1.4822F, -0.6924F, -1.8799F, 5.0F, 26.0F, 5.0F, 0.0F, false);
			cube_r5 = new ModelRenderer(this);
			cube_r5.setRotationPoint(-22.0F, -44.0F, -3.0F);
			bb_main.addChild(cube_r5);
			setRotationAngle(cube_r5, 1.2103F, -0.0865F, 0.1314F);
			cube_r5.setTextureOffset(0, 0).addBox(-4.0F, -2.0F, -3.0F, 5.0F, 26.0F, 5.0F, 0.0F, false);
		}

		@Override
		public void render(MatrixStack matrixStack, IVertexBuilder buffer, int packedLight, int packedOverlay, float red, float green, float blue,
				float alpha) {
			all2.render(matrixStack, buffer, packedLight, packedOverlay);
			bb_main.render(matrixStack, buffer, packedLight, packedOverlay);
		}

		public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) {
			modelRenderer.rotateAngleX = x;
			modelRenderer.rotateAngleY = y;
			modelRenderer.rotateAngleZ = z;
		}

		public void setRotationAngles(Entity e, float f, float f1, float f2, float f3, float f4) {
			this.Head2.rotateAngleY = f3 / (180F / (float) Math.PI);
			this.Head2.rotateAngleX = f4 / (180F / (float) Math.PI);
		}
	}

}
